package 力扣刷题.探索初级算法.数组.加一;

import java.util.Arrays;
import java.util.Scanner;

class Solution {

    public int[] plusOne(int[] digits) {
        digits[digits.length-1]=digits[digits.length-1]+1;
        return xuYaoJinWei(digits, digits.length-1);

    }
    int[] shouWeiJinWei(int[] digits) {
        int[] newDigits=new int[digits.length+1];
        newDigits[0]=1;
        digits[0]=digits[0]-10;
        for (int i = 1; i < newDigits.length; i++) {
            newDigits[i]=digits[i-1];
        }
        digits=newDigits;
        return digits;
    }
    int[] houMianJinWei(int[] digits,int digitPos) {
        digits[digitPos]=digits[digitPos]-10;
        digits[digitPos-1]= digits[digitPos-1]+1;

        return xuYaoJinWei(digits, --digitPos);
    }
    int[] xuYaoJinWei(int[] digits,int digitPos){
        if(digits[digitPos]==10) {
            if(digitPos!=0)
            digits=houMianJinWei(digits, digitPos);
            if(digitPos==0)
                digits=shouWeiJinWei(digits);
        }
        return digits;

    }
    public static void main(String[] args) {

        int len;
        Scanner s=new Scanner(System.in);
        len=s.nextInt();
        int[] nums=new int[len];
        for (int i = 0; i < len; i++) {
            nums[i]=s.nextInt();
        }
        System.out.println(Arrays.toString(new Solution().plusOne(nums)));
    }
}